 
  

 






<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html>

<!-- Mirrored from www.javapractices.com/topic/TopicAction.do?Id=196 by HTTrack Website Copier/3.x [XR&CO'2010], Sun, 12 Jun 2011 17:28:07 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->
<head>
 <title>
  Java Practices -> Use for-each liberally
 </title>
 <link rel="stylesheet" type="text/css" href="../stylesheet8.css" media="all">
 
 <link rel="shortcut icon" href='../images/favicon.ico' type="image/vnd.microsoft.icon">
 <meta name="description" content="Concise presentations of java programming practices, tasks, and conventions, amply illustrated with syntax highlighted code examples.">
 
 <meta name='keywords' content='enhanced,for&#045;each,iterate,iteration,loop,java,java programming,java practices,java idiom,java style,java design patterns,java coding conventions,'>
 
 
</head>
 
<body>


<div class='menu-bar'>
 
  <a href='../home/HomeAction.html' title='Table of Contents'>Home</a> |
  <a href='../vote/VoteSummaryAction-2.html' title='View Poll Results'>Poll</a> |
   
  <A href='../feedback/FeedbackAction451f-2.html?Operation=Show' title='Send Your Feedback'>Wiki</a> |
  <b><a href='../source/SourceAction-2.html' title='Grab Source Code'>Source Code</a></b><IMG class='no-margin' SRC="../images/goldstar.gif" ALT=""> |

  <a href='http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp?From=1' title='Free Download - Java Web Application Framework'><b>WEB4J</b></a> |
  
  <a href='http://www.date4j.net/' title='Replacement for java.util.Date'><b>DATE4J</b></a> |

   <a href='../references/ReferencesAction-2.html' title='References'>Links</a>
   
  <form action='http://www.javapractices.com/search/SearchAction.do' method='get' class='search-form'>
   <input type='text' name='SearchTerms' value="" size=12 maxlength=50 class='search'>
   <input type='submit' value="Search">
  </form>
 
</div>

<P>



  

 






<p class="display-messages">

 

 

</p>


<div class="main-layout">
 
   

 




<div class='page-title'>Use for-each liberally</div>

<div class='main-body'>
 
<br>The <tt><a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/foreach.html">for-each</a></tt>
loop is used with both collections and arrays. It is intended to simplify
the most common form of iteration, where the iterator or index is used
solely for iteration, and not for any other kind of operation, such as
removing or editing an item in the collection or array. When there is a
choice, the <tt>for-each</tt> loop should be preferred over the <tt>for</tt>
loop, since it increases legibility.
<p><b>Example</b>
<p>Here are some examples of the <tt>for-each</tt> loop.
<br>
<PRE>

<span class='keyword'>import</span> java.util.*;
<span class='keyword'>import</span> java.math.BigDecimal;

<span class='keyword'>public</span> <span class='keyword'>final</span> <span class='keyword'>class</span> ForEachExamples {

  <span class='keyword'>public</span> <span class='keyword'>static</span> <span class='keyword'>void</span> main(String... aArgs){
    List&lt;Number&gt; numbers = <span class='keyword'>new</span> ArrayList&lt;Number&gt;();
    numbers.add(<span class='keyword'>new</span> Integer(<span class='literal'>42</span>));
    numbers.add(<span class='keyword'>new</span> Integer(-<span class='literal'>30</span>));
    numbers.add(<span class='keyword'>new</span> BigDecimal(<span class='literal'>"654.2"</span>));

    <span class='comment'>//typical for-each loop
</span>    <span class='comment'>//processes each item, without changing the collection or array.
</span>    <span class='keyword'>for</span> ( Number number : numbers ){
      log(number);
    }

    <span class='comment'>//use with an array
</span>    String[] names = {<span class='literal'>"Ethan Hawke"</span>, <span class='literal'>"Julie Delpy"</span>};
    <span class='keyword'>for</span>( String name : names ){
      log(<span class='literal'>"Name : "</span> + name);
    }

    <span class='comment'>//removal of items requires an explicit iterator :
</span>    Collection&lt;String&gt; words = <span class='keyword'>new</span> ArrayList&lt;String&gt;();
    words.add(<span class='literal'>"Il ne lui faut que deux choses: "</span>);
    words.add(<span class='literal'>"le"</span>);
    words.add(<span class='literal'>"pain"</span>);
    words.add(<span class='literal'>"et"</span>);
    words.add(<span class='literal'>"le"</span>);
    words.add(<span class='literal'>"temps."</span>);
    words.add(<span class='literal'>"- Alfred de Vigny."</span>);
    <span class='keyword'>for</span>(Iterator&lt;String&gt; iter = words.iterator(); iter.hasNext();){
      <span class='keyword'>if</span> (iter.next().length() == <span class='literal'>4</span>){
        iter.remove();
      }
    }
    log(<span class='literal'>"Edited words: "</span> + words.toString());

    <span class='comment'>//if used with a non-parameterized type, then Object must be used
</span>    Collection stuff = <span class='keyword'>new</span> ArrayList();
    stuff.add(<span class='literal'>"blah"</span>);
    <span class='keyword'>for</span> (Object thing : stuff){
      String item = (String)thing;
      log(<span class='literal'>"Thing : "</span> + item);
    }
  }

  <span class='comment'>// PRIVATE //
</span>  <span class='keyword'>private</span> <span class='keyword'>static</span> <span class='keyword'>void</span> log(Object aThing){
    System.out.println(aThing);
  }
}
 
</PRE>
<br>
<br>
<br>

</div>




<div class='topic-section'>See Also :</div>
<div class='main-body'>
 
  
  <a href='TopicAction5e5f-2.html?Id=88'>Iterate without an index</a> <br>
 
  
  <a href='TopicAction852c-2.html?Id=125'>Two ways of using Iterator</a> <br>
 
  
  <a href='TopicActionaa3f-2.html?Id=225'>Modernize old code</a> <br>
 
</div>


<div class='topic-section'>Would you use this technique?</div>
<div class='main-body'>
  
  <form action="http://www.javapractices.com/vote/AddVoteAction.do" method='post'>
    Yes<input type='radio' name='Choice' value='Y' >
    &nbsp;&nbsp;No<input type='radio' name='Choice' value='N'>
    &nbsp;&nbsp;Undecided<input type='radio' name='Choice' value="?" >
    &nbsp;&nbsp;<input type=submit value="Vote" >
    <input type='hidden' name='Operation' value='Apply'>
    <input type='hidden' name='TopicId' value='196'>
  </form>
</div>

<div style='height:10.0em;'></div>

 
 
</div>

  

 





<div align='center' class='legalese'>  
&copy; 2011 Hirondelle Systems |
<a href='../source/SourceAction-2.html'><b>Source Code</b></a><IMG class='no-margin' SRC="../images/goldstar.gif" ALT=""> |
<a href="mailto:webmaster@javapractices.com">Contact</a> |
<a href="http://creativecommons.org/licenses/by-nc-sa/1.0/">License</a> |
<a href='../apps/cjp.rss'>RSS</a>
<!-- ukey="2AC36CD2" -->
<!-- ckey="16DF3D87" -->
<br>

 Individual code snippets can be used under this <a href='../LICENSE.txt'>BSD license</a> - Last updated on June 6, 2010.<br>
 Over 150,000 unique IPs last month - <span title='Java Practices 2.6.5, Mon May 16 00:00:00 EDT 2011'>Built with</span> <a href='http://www.web4j.com/'>WEB4J</a>.<br>
 - In Memoriam : Bill Dirani -
</div>

<script src="../../www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2633428-1";
urchinTracker();
</script>



</body>

<!-- Mirrored from www.javapractices.com/topic/TopicAction.do?Id=196 by HTTrack Website Copier/3.x [XR&CO'2010], Sun, 12 Jun 2011 17:28:07 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->
</html>
